package nutella89.basic;

import java.util.ArrayList;
import java.util.Iterator;

import siestageek.model.SungJuk;

public class J22_Collection {

	public static void main(String[] args) {

		// 컬렉션 프레임워크 다루기
		// ArrayList - 가변크기를 지원하는 배열

		// ArrayList 선언
		ArrayList sjdata = new ArrayList();
		// jdk 1.5 이전방식으로 코드작성

		sjdata.add(123);
		sjdata.add('가');
		sjdata.add(89764.66546);
		sjdata.add("ZEFASDFGEGASDG");

		// 특정위치에 데이터 추가 (add(위치, 내용))
		sjdata.add(2, new SungJuk());
		// sjdata.add(10, new SungJukVO()); // 오류
		// sjdata 에서는 총 5개의 데이터가 저장중이므로
		// 10번째 위치에 데이터가 없어 추가는 불가

		// ArrayList상의 데이터 알아내기(get(내용))
		System.out.println( sjdata.get(2) );
		System.out.println( sjdata.get(1) );
		//System.out.println( sjdata.get(9) ); //오류!
		
		//arraylist에 저장된 데이터 갯수 알아내기(size())
		System.out.println(sjdata.size());
		
		//arraylist에 저장된 데이터 제거 (remove(위치))
		sjdata.remove(3);
		System.out.println(sjdata.get(3));
		//ArrayList에 저장된 데이터 수정(set(위치, 값))
		sjdata.remove(3);
		System.out.println(sjdata.get(3));
		
		// ArrayList의 데이터 찾기
		System.out.println(sjdata.contains(123));
		System.out.println(sjdata.contains('가'));
		System.out.println(sjdata.contains("xyz"));
		
		// ArrayList의 데이터 찾기(indexOf(값))
		System.out.println( sjdata.indexOf(123));
		System.out.println(sjdata.indexOf('가'));
		System.out.println("abc");
		System.out.println(sjdata.indexOf("xyz"));
		
		//ArrayList의 데이터 찾기(indexOf(값))
		
		//ArrayList의 데이터 찾기(clear(값))
		sjdata.clear();

		//ArrayList의 데이터 존재여부(isEmpty())
				System.out.println(sjdata.isEmpty());
				
		/*-------------------------------------------*/
				// ArrayList 상의 모든 데이터 출력(1)
				sjdata.add("태희");sjdata.add("지현");
				sjdata.add("수지");sjdata.add("혜교");
				sjdata.add("지연");
				for(int i=0; i<sjdata.size(); ++i) {
					System.out.println(sjdata.get(i));
				}
				// ArrayList 상의 모든 데이터 출력(2)
				// Iterator 인터페이스를 이영하면
				// 편리하게 collection의 요소들을 처리할 수 있음
				Iterator iter = sjdata.iterator();
				while ( iter.hasNext()) {
					System.out.println(iter.next());
				}

		
		
		
		

	}

}
